Содержание
Класс Number. Работа с числами
Класс Math. Использование математических функций
Класс Arguments. Функции с произвольным количеством аргументов
Класс RegExp. Проверка значений с помощью регулярных выражений
Основные понятия
Для использования методов и свойств класса чаще всего необходимо создать экземпляр класса. Для этого используется оператор new, после него указывается имя класса, к которому будет относиться данный экземпляр. После имени класса, в круглых скобках, можно передавать некоторые параметры, задавая таким образом начальные значения свойствам класса:
<Экземпляр класса> = new <Имя класса> ([<Параметры>]);
При создании экземпляра класса ссылка (указатель) сохраняется в переменной. Используя ссылку, можно обращаться к свойствам и методам созданного экземпляра класса.
При обращении к свойствам используется следующий формат:
<Экземпляр класса>.<Имя сзойства>;
Обращение к методам осуществляется аналогично, только после имени метода необходимо указать круглые скобки:
<Экземпляр класса>.<Имя метода>();
В скобках часто указываются параметры метода.
Класс Global
Использование свойств и методов класса Global не требует создания экземпляра класса. Свойства и методы данного класса являются встроенными функциями JavaScript.
Свойства:
NaN содержит значение NaN (Not a Number, не число):
var х = NaN;
infinity возвращает значение «плюс бесконечность»:
var х = Infinity;
Методы:
parseint(<строка>, [<основание>]) преобразует строку в целое число системы счисления, заданной основанием. Если основание не указано, то по умолчанию используется десятичная система. Если строка не может быть преобразована в число, возвращается значение NaN. Например:
var Number1 = 15;
var Str = «5»;
var Str5 = «FF»;
var Str2 = Number1 — parseInt(Str);
// Переменная содержит число 10
var Str3 = Number1 — parseInt(Str5, 16);
// Переменная содержит число -240
var Str4 = Number1 + parseInt(Str);
// Переменная содержит число 20
parseFioat (<строка>) преобразует строку в число с плавающей точкой:
var Str = «5.2»;
var Str2 = parseFloat(Str); // Переменная содержит число 5.2
eval (<строка>) вычисляет выражение в строке, как если бы это было обычное выражение JavaScript:
var Str = «3 + 5»;
var Str2 = eval(Str); // Переменная содержит число 8
isNaN(<выражение>) проверяет, является ли выражение правильным числом. Возвращает true, если значение выражения равно NaN, и false, если выражение возвращает число;
isFinite (<выражение>) проверяет, является ли выражение конечным числом. Возвращает true или false;
escape (<строка>) кодирует строку шестнадцатеричными кодами:
var Str = escape(«Привет»);
// Str = %u041F%u0440%u0438%u0432%u0435%u0442
unescape(<Строка>) декодирует строку, закодированную методом escape ():
var Str = unescape(«%u041F%u0440%u0438%u0432%u0435%u0442»);
// Str = Привет (1)
encodeURI (<URL-адрес>) кодирует URL-адрес целиком:
var Str = «test.php?id=5&n=Николай»;
window.alert(encodeURI(Str));
decodeURI (<Строка>) декодирует Строку, закодированную методом encodeURI();
encodeURIComponent (<Строка>) выполняет URL-кодирование строки:
var Str = encodeURIComponent(«Строка»);
// Str = %D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B0
В отличие от функции encodeURI() заменяет все спецсимволы шестнадцатеричными кодами:
var Str = «test.php?name=Николай»;
window.alert(encodeURIComponent(Str));
// test.php%3Fname%3D%D0%9D%D0%B8%D0%BA%D0%BE%D0%BB%D0%B0%D0%B9
decodeURIComponent (<строка>) декодирует строку, закодированную методом encodeURIComponent().
Класс Number. Работа с числами
Класс Number используется для хранения числовых величин, а также для доступа к константам. Экземпляр класса создается но следующей схеме:
<Экземпляр класса> = new Number (<Начальное значение>);
Свойства класса Number можно использовать без создания экземпляра класса:max_value — максимально допустимое в JavaScript число:
max_value — максимально допустимое в JavaScript число:
var x = Number.MAX_VALUE; // 1.7976931348623157e+308
min_value — минимально допустимое в JavaScript число:
var x = Number.MIN_VALUE; // 5e-324
NaN — значение NaN:
var x = Number.NaN; // NaN
negative_infinity — значение «минус бесконечность»:
var x = Number.NEGATIVE_INFINITY; // -Infinity
positive_infinity — значение «плюс бесконечность»:
var x = Number.POSITIVE_INFINITY; // Infinity
Методы:
vaiueof () возвращает числовое значение экземпляра класса:
var x = new Number (15);
var y = x.valueOf(); // 15
document.write(typeof y); // number
tostring () возвращает строковое представление числа:
var x = new Number (15);
var Str = x.toString(); // «15»
document.write(typeof Str); // string
Класс Math. Использование математических функций
Класс Math содержит математические константы и функции. Его использование не требует создания экземпляра класса.
Свойства:
E — e, основание натурального логарифма;
LN2 — натуральный логарифм 2;
ln10 — натуральный логарифм 10;
LOG2E — логарифм по основанию 2 от е;
log10e — десятичный логарифм от е\
PI — число Пи:
document.write(Math.PI); // 3.141592653589793
SQRT1_2 — квадратный корень из 0,5;
SQRT2 — квадратный корень из 2.
Методы:
abs() — абсолютное значение;
sin(), cos(), tan() — стандартные тригонометрические функции (синус, косинус, тангенс). Значение указывается в радианах;
asin(), acosO, atari() — обратные тригонометрические функции (арксинус, арккосинус, арктангенс). Значение возвращается в радианах;
ехр() — экспонента;
log () — натуральный логарифм;
pow (<Число>, <Степень>) —возведение <Числа> в <Степень>:
var x = 5;
document.write(Math.pow(x, 2)); // 25 (5 в квадрате)
sqrt () — квадратный корень:
var x = 25;
document.write(Math.sqrt(x)); // 5 (квадратный корень из 25)
round () — значение, округленное до ближайшего целого. Если первое число после запятой от 0 до 4, то округление производится к меньшему по модулю целому, а в противном случае — к большему:
var x = 2.499;
var y = 2.5;
document.write(Math.round(x)); // округлено до 2
document.write(Math.round(y)); // округлено до 3
ceil () — значение, округленное до ближайшего большего целого:
var x = 2.499;
var y = 2.5;
document.write(Math.ceil(x)); // округлено до 3
document.write(Math.ceil(y)); // округлено до 3
floor () — значение, округленное до ближайшего меньшего целого:
var x = 2.499;
var y = 2.5;
document.write(Math.floor(x)); // округлено до 2
document.write(Math.floor(y)); // округлено до 2
max(<Список чисел через запятую>) —максимальное значение из списка:
document.write(Math.max(3, 10, 6)); // 10
min(<Список чисел через запятую>) —минимальное значение из списка:
document.write(Math.min(3, 10, 6)); // 3
random () — случайное число от 0 до 1:
document.write(Math.random()); // например, 0.9778613566886634
Для того чтобы получить случайное целое число от 0 до 9, нужно возвращаемое методом random () значение умножить на 9.9999, а затем округлить число до ближайшего меньшего целого при помощи метода floor ():
var x = Math.floor(Math.random()*9.9999);
document.write(x);
Попробуйте несколько раз обновить Web-страницу. Число будет меняться случайным образом в пределах от 0 до 9 включительно. Для чего это может пригодиться? Например, если есть четыре баннера 468х60, то их можно показывать случайным способом.
var x = Math.floor(Math.random()*3.9999);
document.write(‘<img src=»banner’ + x + ‘.gif» width=»480″ height=»60″>’);
Четыре баннера с именами banner0.gif, banner1.gif, banner2.gif и banner3.gif должны быть расположены в одной папке с файлом, в котором находится исполняемый скрипт. Названия файлов с баннерами можно сделать произвольными, добавив их в массив:
var Mass = [ «banner-red.gif», «banner-blue.jpeg»,
«banner-gray.gif», «banner-white.png» ];
var x = Math.floor(Math.random()*3.9999);
document.write(‘<img src=»‘ + Mass[x]);
document.write(‘» width=»480″ height=»60″>’);
Класс Function (функции)
Класс Function позволяет использовать функцию как экземпляр класса. Делается это таким образом:
<Имя функции> = new Function(<Параметр1>, … , <ПараметрЫ>, <Тело функции>);
Например, функцию суммирования двух чисел
function f_Sum(x, y) {
return x + y;
}
можно переписать так:
var f_Sum = new Function («x», «y», «return x + y»);
Указывать «тело» функции в виде строки очень неудобно. По этой причине данным способом никто не пользуется.
Вместо него применяются анонимные функции:
var f_Sum = function(x, y) {
return x + y;
};
Вызывать функцию можно так же, как и раньше:
document.write(f_Sum(5, 6)); // 11
При использовании анонимных функций следует учитывать, что при указании внутри функции глобальной переменной будет сохранена ссылка на эту переменную, а не на ее значение:
var x = 5;
var f_Sum = function() {
return x; // Сохраняется ссылка, а не значение переменной x !
};
document.write(f_Sum()); // 5
x = 10; // Изменили значение
document.write(f_Sum()); // 10, а не 5
Класс Arguments. Функции с произвольным количеством аргументов
Класс массива аргументов позволяет получить доступ ко всем аргументам, переданным функции. Массив доступен только внутри тела функции. Получить доступ к аргументу можно, указав его индекс, а свойство length позволяет определить количество аргументов, переданных функции.
function f_Sum(x, y) {
return arguments[0]+arguments[1];
}
document.write(f_Sum(5, 6)); // 11
Какой в этом смысл? Дело в том, что при использовании массива аргументов можно передать функции больше аргументов, чем первоначально объявлено. Например, можно просуммировать сразу несколько чисел, а не только два
function f_Sum(x, y) {
var z = 0;
for (var i=0, c=arguments.length; i<c; i++) {
z += arguments[i];
}
return z;
}
document.write(f_Sum(5, 6, 7, 20)); // 38
Класс RegExp. Проверка значений с помощью регулярных выражений
Класс RegExp позволяет осуществить поиск в строке с помощью регулярных выражений — шаблонов для поиска определенных комбинаций метасимволов. Регулярные выражения позволяют осуществлять очень сложный поиск. Создать экземпляр класса RegExp можно двумя способами:
<Экземпляр класса> = new RegExp(<Регулярное зыражение>[, <Модификатор>]); <Экземпляр класса> = /<Регуляркое Еыражение>/[<Модификатор>];
Необязательный параметр <модификатор> задает дополнительные параметры поиска. Он может содержать следующие символы:
i — поиск без учета регистра;
g — глобальный поиск (поиск всех вхождений регулярного выражения в строке);
m — многострочный режим. Символ ^ соответствует началу каждой подстроки, а $ — концу каждой подстроки:
var p = new RegExp(«^[0-9]$», «mg»);
var Str = «1\n2\n3\nстрока\n4»;
Mass = Str.match(p);
document.write(Mass.join(«, «)); // Выведет: 1, 2, 3, 4
gi — глобальный поиск без учета регистра символов.
При изучении класса String нами были оставлены без внимания три метода —search(), match() И replace().
Рассмотрим способы их применения. search(<Регулярное выражение>) возвращает номер позиции первого вхождения подстроки, совпадающей с регулярным выражением:
var p = new RegExp(«200[14]»);
var Str = «2000, 2001, 2002, 2003, 2004»;
document.write(Str.search(p)); // 6
Шаблону 200[14] соответствуют только два года: 2001 и 2004. match(<Регулярное выражение>) возвращает массив с результатами поиска, совпадающими с регулярным выражением:
var p = new RegExp(«200[14]»);
var Str = «2000, 2001, 2002, 2003, 2004»;
var Mass = [];
Mass = Str.match(p);
for (var i=0, c=Mass.length; i<c; i++)
document.write(Mass[i] + «<br>»);
Этот пример выведет только 2001, так как не указан модификатор глобального поиска g. Модифицируем его, чтобы получить все вхождения:
var p = new RegExp(«200[14]», «g»);
var Str = «2000, 2001, 2002, 2003, 2004»;
var Mass = [];
Mass = Str.match(p);
for (var i=0, c=Mass.length; i<c; i++)
document.write(Mass[i] + «<br>»);
Теперь будут выведены все подстроки, совпадающие с регулярным выражением:
2001
2004
replace(<Регулярное выражение>, <Текст для замены>) возвращает строку, которая является результатом поиска и замены в исходной строке с использованием регулярного выражения:
var p = new RegExp(«200[14]», «g»);
var Str = «2000, 2001, 2002, 2003, 2004»;
Str = Str.replace(p, «2007»);
document.write(Str); // «2000, 2007, 2002, 2003, 2007»
В качестве второго параметра можно также указать ссылку на функцию. Через первый параметр в функции доступна строка, полностью соответствующая шаблону. Через остальные параметры доступны подвыражения, которые соответствуют фрагментам, заключенным в шаблоне в круглые скобки. В качестве примера найдем все числа в строке и прибавим к ним число 10:
var p = new RegExp(«[0-9]([0-9]+)», «g»);
var Str = «2000, 2001, 2002, 2003, 2004»;
Str = Str.replace(p, function(s, x) {
document.write(x + «, «);
var n = parseInt(s);
n += 10;
return n + «»;
});
document.write(«<br>» + Str);
// «000, 001, 002, 003, 004, «
// «2010, 2011, 2012, 2013, 2014»
В строке для замены можно использовать специальные переменные $1, …, $n, через которые доступны фрагменты, заключенные в шаблоне в круглые скобки. В качестве примера поменяем два тега местами:
var p = new RegExp(«<([a-z]+)><([a-z]+)>»);
var Str = «<br><hr>»;
Str = Str.replace(p, «<$2><$1>»);
document.write(Str);
// Выведет в окне Web-браузера: «<hr><br>»
Метод split (<Регулярное выражением [<Лимит>] ) также поддерживает регулярные выражения. Возвращает массив, полученный в результате разделения строки на подстроки по фрагменту, соответствующему регулярному выражению. Если второй параметр присутствует, то он задает максимальное количество элементов в результирующем массиве:
var Str = «1 2 3\n4\t5\r6»;
var Mass = Str.split(/\s/);
document.write(Mass.join(«, «)); // «1, 2, 3, 4, 5, 6»
var Mass2 = Str.split(/\s/, 3);
document.write(Mass2.join(«, «)); // «1, 2, 3»
Вместо методов класса string можно воспользоваться методами класса RegExp:□ test (<Строка>) возвращает true или false в зависимости от того, был поиск успешным или нет. В качестве примера произведем проверку правильности введенной даты
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01//EN»
«http://www.w3.org/TR/html4/strict.dtd»>
<html>
<head>
<title>Проверка вводимых данных</title>
<meta http-equiv=»Content-Type» content=»text/html; charset=windows-1251″>
</head>
<body>
<script type=»text/javascript»>
<!—
var d = window.prompt(«Введите дату в формате день.месяц.год», «»);
if (d==null) {
document.write(«Вы нажали Отмена»);
}
else {
var p = /^[0-3]\d\.[01]\d\.\d{4}$/;
if (p.test(d)) document.write(«Дата введена правильно»);
else document.write(«Вы неправильно ввели дату»);
}
//—>
</script>
</body>
</html>
exec (<Строка>) позволяет получить массив с результатами поиска, совпадающими с регулярным выражением:
var p = new RegExp(«(\\d{2}):(\\d{2}):(\\d{2})»);
var Str = «Sun Apr 29 18:47:27 UTC+0400 2007»;
var Mass = [];
Mass = p.exec(Str);
document.write(Mass.join(«<br>»));
Эта программа выведет
18 :47:27
18
47
27
Первая строка соответствует найденному фрагменту (элемент массива с индексом 0). Вторая, третья и четвертая строки содержат фрагменты, соответствующие группам метасимволов (\\d{2}), заключенных в круглые скобки. Номер скобок по порядку следования в регулярном выражении соответствует индексу фрагмента в массиве.
- Кантор И. Современный учебник JavaScript //Современный учебник Java Script [Электронный ресурс]/И. Кантор.–2019.–Режим доступа: http://learn. javascript. ru.–Дата доступа. – 2019. – Т. 12.
- https://practicum.yandex.ru/blog/chto-takoe-javascript-zachem-nuzhen/
- https://html5book.ru/osnovy-javascript/?ysclid=ldd5eo2non397569610&__cf_chl_tk=mUtXDFcz1QOyxw35bLNyonSFG.FOb3hETis.j6wOd9s-1674740760-0-gaNycGzNCL0
- https://www.javascripttutorial.net/
- Фролов А. В., Фролов Г. В. Сценарии JavaScript в активных страницах Web //М.: ДИАЛОГ-МИФИ. – 2020.